﻿using System;
using System.Collections.Generic;
using UnityEngine;
using System.Collections;

namespace Inlycat
{

    public class PlatformsWrapper : Singleton<PlatformsWrapper>
    {


        #region cache fields

        //private LoginController _loginController;

        #endregion


        #region platform sdk api

        //public void InitSDK(Action callback)
        //{
        //    /** SDK初始化，版本控制，检查强制更新 */
        //    switch (BasePlatformManager.CurrentPlatform)
        //    {
        //        case BasePlatformManager.PlatformType.Inlycat:
        //            callback();
        //            break;

        //        case BasePlatformManager.PlatformType.UnionSDK:
        //            UnionSDKManager.Instance.Init(() =>
        //            {
        //                callback();
        //            });
        //            break;

        //        case BasePlatformManager.PlatformType.DownJoy:
        //            DownJoyManager.Instance.Init(() =>
        //            {
        //                callback();
        //            });
        //            break;

        //        case BasePlatformManager.PlatformType.TBT:
        //            TBTManager.Instance.Init(() =>
        //            {
        //                callback();
        //            });
        //            break;

        //        case BasePlatformManager.PlatformType.XiaoMi:
        //            XiaoMiManager.Instance.Init(() =>
        //            {
        //                callback();
        //            });
        //            break;
        //        case BasePlatformManager.PlatformType.UC:
        //            UCManager.Instance.Init(() =>
        //            {
        //                callback();
        //            });
        //            break;

        //        case BasePlatformManager.PlatformType.I4:
        //            I4Manager.Instance.Init(() =>
        //            {
        //                callback();
        //            });
        //            break;
        //        case BasePlatformManager.PlatformType.oppo:
        //            OppoManager.Instance.Init(() =>
        //            {
        //                callback();
        //            });
        //            break;
        //        case BasePlatformManager.PlatformType.kuaiyong:
        //            KuaiYongManager.Instance.Init(() =>
        //            {
        //                callback();
        //            });
        //            break;
        //        case BasePlatformManager.PlatformType.baidu:
        //            //BaiDuManager.Instance.Init(() =>
        //            //{
        //            //	callback();
        //            //});
        //            callback();

        //            break;

        //        case BasePlatformManager.PlatformType.LengJing:
        //            callback();
        //            break;

        //        case BasePlatformManager.PlatformType.MSDK:
        //            callback();
        //            break;
        //        default:
        //            throw new ArgumentOutOfRangeException();
        //    }
        //}

        //public void SetPreLoginState(LoginBackground background, Action<LoginData> onLoginSucc)
        //{
        //    switch (BasePlatformManager.CurrentPlatform)
        //    {
        //        case BasePlatformManager.PlatformType.Inlycat:
        //        case BasePlatformManager.PlatformType.UnionSDK:
        //        case BasePlatformManager.PlatformType.DownJoy:
        //        case BasePlatformManager.PlatformType.TBT:
        //        case BasePlatformManager.PlatformType.XiaoMi:
        //        case BasePlatformManager.PlatformType.UC:
        //        case BasePlatformManager.PlatformType.I4:
        //        case BasePlatformManager.PlatformType.oppo:
        //        case BasePlatformManager.PlatformType.kuaiyong:
        //        case BasePlatformManager.PlatformType.anzhi:
        //        case BasePlatformManager.PlatformType.baidu:
        //        case BasePlatformManager.PlatformType.LengJing:
        //            background.SetTencentLoginActive(false);
        //            background.QQButton.gameObject.SetActive(false);
        //            background.WeixinButton.gameObject.SetActive(false);
        //            break;
        //        case BasePlatformManager.PlatformType.MSDK:
        //            background.SetTencentLoginActive(true);
        //            background.QQButton.gameObject.SetActive(true);
        //            background.WeixinButton.gameObject.SetActive(true);
        //            background.SetWeixinAndQQLoginButton(() =>
        //                {
        //                    if (!MSDKManager.Instance.IsQQInstalled())
        //                    {
        //                        //MSDKManager.Instance.ShowMessage("您还没有安装QQ, 不能使用QQ登录哟~");
        //                        //Application.Quit();
        //                        PopHint.Hint("您还没有安装QQ, 请先安装QQ哟~");
        //                        WGPlatform.Instance.WGOpenUrl("http://im.qq.com/mobileqq");
        //                    }
        //                    else
        //                    {
        //                        MSDKManager.Instance.Login((uid, token, channelId) =>
        //                        {
        //                            MSDKManager.Instance.IsWeixin = false;
        //                            onLoginSucc(null);
        //                            background.QQButton.gameObject.SetActive(false);
        //                            background.WeixinButton.gameObject.SetActive(false);
        //                            background.GetComponent<LoginBackground>().Anim2();
        //                            //NGUITools.SetActive(winEntry.gameObject, true);
        //                            background.GetComponent<LoginBackground>().IsLogining = false;
        //                        }, false);
        //                        MSDKManager.Instance.MessageReceiverInstance.OnCancelLogin = background.Reset;
        //                    }
        //                },
        //                () =>
        //                {
        //                    if (!MSDKManager.Instance.IsWeixinInstalled())
        //                    {
        //                        //MSDKManager.Instance.ShowMessage("您还没有安装微信, 不能使用微信登录哟~");
        //                        //Application.Quit();
        //                        PopHint.Hint("您还没有安装微信, 不能使用微信登录哟~");
        //                    }
        //                    else
        //                    {
        //                        MSDKManager.Instance.Login((uid, token, channelId) =>
        //                        {
        //                            MSDKManager.Instance.IsWeixin = true;
        //                            onLoginSucc(null);
        //                            background.QQButton.gameObject.SetActive(false);
        //                            background.WeixinButton.gameObject.SetActive(false);
        //                            background.GetComponent<LoginBackground>().Anim2();
        //                            //NGUITools.SetActive(winEntry.gameObject, true);
        //                            background.GetComponent<LoginBackground>().IsLogining = false;
        //                        }, true);
        //                        MSDKManager.Instance.MessageReceiverInstance.OnCancelLogin = background.Reset;
        //                    }
        //                });
        //            break;
        //        default:
        //            throw new ArgumentOutOfRangeException();
        //    }
        //}

        //public void ResetLoginState(LoginBackground loginBackground)
        //{
        //    switch (BasePlatformManager.CurrentPlatform)
        //    {
        //        case BasePlatformManager.PlatformType.Inlycat:

        //            break;
        //        case BasePlatformManager.PlatformType.UnionSDK:
        //            if (!UnionSDKManager.Instance.MessageReceiverInstance.LoginSuccess)
        //            {
        //                loginBackground.ResetPartial();
        //            }
        //            break;

        //        case BasePlatformManager.PlatformType.DownJoy:
        //            if (!DownJoyManager.Instance.MessageReceiverInstance.LoginSuccess)
        //            {
        //                loginBackground.ResetPartial();
        //            }
        //            break;

        //        case BasePlatformManager.PlatformType.TBT:
        //            if (!TBTManager.Instance.MessageReceiverInstance.LoginSuccess)
        //            {
        //                loginBackground.ResetPartial();
        //            }
        //            break;

        //        case BasePlatformManager.PlatformType.XiaoMi:
        //            if (!XiaoMiManager.Instance.MessageReceiverInstance.LoginSuccess)
        //            {
        //                loginBackground.ResetPartial();
        //            }
        //            break;

        //        case BasePlatformManager.PlatformType.UC:
        //            if (!UCManager.Instance.MessageReceiverInstance.LoginSuccess)
        //            {
        //                loginBackground.ResetPartial();
        //            }
        //            break;

        //        case BasePlatformManager.PlatformType.I4:
        //            if (!I4Manager.Instance.MessageReceiverInstance.LoginSuccess)
        //            {
        //                loginBackground.ResetPartial();
        //            }
        //            break;

        //        case BasePlatformManager.PlatformType.baidu:
        //            if (!BaiDuManager.Instance.MessageReceiverInstance.LoginSuccess)
        //            {
        //                loginBackground.ResetPartial();
        //            }
        //            break;

        //        case BasePlatformManager.PlatformType.oppo:
        //            if (!OppoManager.Instance.MessageReceiverInstance.LoginSuccess)
        //            {
        //                loginBackground.ResetPartial();
        //            }
        //            break;
        //        case BasePlatformManager.PlatformType.kuaiyong:
        //            if (!KuaiYongManager.Instance.MessageReceiverInstance.LoginSuccess)
        //            {
        //                loginBackground.ResetPartial();
        //            }
        //            break;
        //        case BasePlatformManager.PlatformType.LengJing:
        //            if (!LengJingManager.Instance.MessageReceiverInstance.LoginSuccess)
        //            {
        //                loginBackground.ResetPartial();
        //            }
        //            break;
        //        case BasePlatformManager.PlatformType.MSDK:
        //            if (!MSDKManager.Instance.MessageReceiverInstance.LoginSuccess)
        //            {
        //                loginBackground.SetTencentLoginActive(true);
        //                loginBackground.QQButton.gameObject.SetActive(true);
        //                loginBackground.WeixinButton.gameObject.SetActive(true);
        //                loginBackground.ResetPartial();
        //            }
        //            break;
        //        default:
        //            throw new ArgumentOutOfRangeException();
        //    }
        //}

        //public void Login(LoginBackground loginBackground, WinAccountScript winAccount, LoginPopWin loginPopWin, Action<LoginData> onLoginSucc)
        //{

        //    switch (BasePlatformManager.CurrentPlatform)
        //    {
        //        case BasePlatformManager.PlatformType.Inlycat:
        //            winAccount.Open(loginPopWin);
        //            break;
        //        case BasePlatformManager.PlatformType.UnionSDK:

        //            UnionSDKManager.Instance.Login((uid, token, plchild) =>
        //            {
        //                onLoginSucc(null);
        //            });

        //            UnionSDKManager.Instance.MessageReceiverInstance.OnCancelLogin = loginBackground.Reset;
        //            break;
        //        case BasePlatformManager.PlatformType.DownJoy:

        //            DownJoyManager.Instance.Login((uid, token, plchild) =>
        //            {
        //                onLoginSucc(null);
        //            });

        //            DownJoyManager.Instance.MessageReceiverInstance.OnCancelLogin = loginBackground.Reset;
        //            break;
        //        case BasePlatformManager.PlatformType.TBT:

        //            TBTManager.Instance.Login(
        //            (uid, token, plchild) =>
        //            {
        //                onLoginSucc(null);
        //            }
        //            );

        //            TBTManager.Instance.MessageReceiverInstance.OnCancelLogin = loginBackground.Reset;
        //            break;
        //        case BasePlatformManager.PlatformType.XiaoMi:

        //            XiaoMiManager.Instance.Login(
        //            (uid, token, plchild) =>
        //            {
        //                onLoginSucc(null);
        //            }
        //            );

        //            XiaoMiManager.Instance.MessageReceiverInstance.OnCancelLogin = loginBackground.Reset;
        //            break;
        //        case BasePlatformManager.PlatformType.UC:


        //            UCManager.Instance.Login((sid, unUse1, unUse2) =>
        //            {
        //                onLoginSucc(null);
        //            });

        //            UCManager.Instance.MessageReceiverInstance.OnCancelLogin = loginBackground.Reset;
        //            break;

        //        case BasePlatformManager.PlatformType.I4:

        //            I4Manager.Instance.Login((uid, token, plchid) =>
        //            {
        //                onLoginSucc(null);
        //            });

        //            I4Manager.Instance.MessageReceiverInstance.OnCancelLogin = loginBackground.Reset;
        //            break;

        //        case BasePlatformManager.PlatformType.oppo:

        //            OppoManager.Instance.Login((uid, token, channelId) =>
        //            {
        //                onLoginSucc(null);
        //            });

        //            OppoManager.Instance.MessageReceiverInstance.OnCancelLogin = loginBackground.Reset;
        //            break;
        //        case BasePlatformManager.PlatformType.baidu:

        //            BaiDuManager.Instance.Login((uid, token, channelId) =>
        //            {
        //                onLoginSucc(null);
        //            });

        //            BaiDuManager.Instance.MessageReceiverInstance.OnCancelLogin = loginBackground.Reset;
        //            break;
        //        case BasePlatformManager.PlatformType.kuaiyong:
        //            KuaiYongManager.Instance.Login((uid, token, channelId) =>
        //            {
        //                onLoginSucc(null);
        //            });
        //            break;
        //        case BasePlatformManager.PlatformType.LengJing:
        //            LengJingManager.Instance.Login((uid, token, channelId) =>
        //            {
        //                onLoginSucc(null);
        //            });
        //            LengJingManager.Instance.MessageReceiverInstance.OnCancelLogin = loginBackground.Reset;
        //            break;
        //        case BasePlatformManager.PlatformType.MSDK:
        //            //MSDKManager.Instance.Login((uid, token, channelId) =>
        //            //{
        //            //    onLoginSucc(null);
        //            //});
        //            //MSDKManager.Instance.MessageReceiverInstance.OnCancelLogin = loginBackground.Reset;
        //            break;
        //        default:
        //            throw new ArgumentOutOfRangeException();
        //    }
        //}

        //public void Pay(int item_id, int item_count, ChargePopWin chargePopWin, Action<string> paySuc)
        //{
        //    switch (BasePlatformManager.CurrentPlatform)
        //    {
        //        case BasePlatformManager.PlatformType.Inlycat:
        //            if (SysParam.ContainsKey("CHARGE_LIMIT") && SysParam.GetInt("CHARGE_LIMIT") == 1)
        //            {
        //                chargePopWin.OpenPayView(item_id);
        //            }
        //            else
        //            {
        //                PopHint.Hint(I18n.T("vip", "close_charge"));
        //            }

        //            P.Log("~~~~~~~URL~~~~~~~\n" + Http.GetUrl("pay", "notify_url_unionsdk"));
        //            break;
        //        case BasePlatformManager.PlatformType.UnionSDK:
        //            ChargeController.Instance().CreateOrder(item_id, item_count, (orderInfo) =>
        //            {
        //                float itemPrice = float.Parse(orderInfo.unit_price) * 100;
        //                float itemOriginalPrice = float.Parse(orderInfo.totla_price) * 100;
        //                string[] cpInfo = { orderInfo.order_no, orderInfo.item_id.ToString(), orderInfo.item_count.ToString(), itemPrice.ToString(), itemOriginalPrice.ToString() };
        //                Dictionary<string, string> dic = new Dictionary<string, string>
        //                {
        //                    {"itemId", "" + orderInfo.item_id},
        //                    {"itemName", orderInfo.item_name},
        //                    {"itemCount", "1"},
        //                    {"itemPrice", "" + itemPrice},
        //                    {"itemOriginalPrice", "" + itemOriginalPrice},
        //                    {"itemType", ""},
        //                    {"itemDesc", orderInfo.item_desc},
        //                    {"roleId", "" + PlayerDataManager.Instance().id},
        //                    {"roleName", PlayerDataManager.Instance().nickName},
        //                    {"charaLevel", "" + PlayerDataManager.Instance().level},
        //                    {"zoneId", "0"},
        //                    {"zoneName", ""},
        //                    {"payNoticeUrl", Http.GetUrl("pay", "notify_url_unionsdk")},
        //                    {"cpInfo", String.Join(",", cpInfo)}
        //                };

        //                UnionSDKManager.Instance.Paid(dic, () => paySuc(orderInfo.order_no));
        //            });

        //            break;
        //        case BasePlatformManager.PlatformType.DownJoy:

        //            ChargeController.Instance().CreateOrder(item_id, item_count, (orderInfo) =>
        //            {
        //                string[] cpInfo = { Http.Instance().host, orderInfo.order_no };

        //                Dictionary<string, string> dic = new Dictionary<string, string>
        //                {
        //                    {"money", orderInfo.totla_price},
        //                    {"productInfo", orderInfo.item_name},
        //                    {"cpInfo", String.Join(",", cpInfo)}
        //                };

        //                DownJoyManager.Instance.Paid(dic, () => paySuc(orderInfo.order_no));
        //            });

        //            break;
        //        case BasePlatformManager.PlatformType.TBT:

        //            ChargeController.Instance().CreateOrder(item_id, item_count, (orderInfo) =>
        //            {
        //                string[] paydes = { Http.Instance().host, "" };

        //                Dictionary<string, string> dic = new Dictionary<string, string>
        //                {
        //                    {"count", orderInfo.totla_price},
        //                    {"order", orderInfo.order_no},
        //                    {"paydes", String.Join(",", paydes)}
        //                };

        //                TBTManager.Instance.Paid(dic, () => paySuc(orderInfo.order_no));
        //            });
        //            break;
        //        case BasePlatformManager.PlatformType.XiaoMi:

        //            ChargeController.Instance().CreateOrder(item_id, item_count, (orderInfo) =>
        //            {
        //                string[] paydes = { Http.Instance().host, "" };

        //                Dictionary<string, string> dic = new Dictionary<string, string>
        //                {
        //                    {"orderId", orderInfo.order_no},
        //                    {"userInfo", String.Join(",", paydes)},
        //                    {"billPrice", orderInfo.totla_price},
        //                    {"balance", "" + PlayerDataManager.Instance().gold},
        //                    {"vipLevel", "vip" + PlayerDataManager.Instance().vip_level},
        //                    {"charLevel", "" + PlayerDataManager.Instance().level},
        //                    {"guild", ""},
        //                    {"charName", PlayerDataManager.Instance().nickName},
        //                    {"charId", "" + PlayerDataManager.Instance().id},
        //                    {"charServer", "S" + PlayerDataManager.Instance().server_id}
        //                };

        //                XiaoMiManager.Instance.Paid(dic, () => paySuc(orderInfo.order_no));
        //            });
        //            break;
        //        case BasePlatformManager.PlatformType.UC:

        //            ChargeController.Instance().CreateOrder(item_id, item_count, (orderInfo) =>
        //            {
        //                PlayerDataManager pdm = PlayerDataManager.Instance();

        //                string[] customInfo = { "", orderInfo.order_no };
        //                P.Log("UC Notify_Url:" + Http.GetUrl("pay", "notify_url_uc"));
        //                Dictionary<string, string> dic = new Dictionary<string, string>
        //                {
        //                    {"money", orderInfo.totla_price},
        //                    {"serverId", "" + 0},
        //                    {"roleId", "" + pdm.id},
        //                    {"roleName", pdm.nickName},
        //                    {"grade", "" + pdm.level},
        //                    {"customInfo", String.Join(",", customInfo)},
        //                    {"notifyUrl", Http.GetUrl("pay","notify_url_uc")}
        //                };

        //                UCManager.Instance.Paid(dic, () => paySuc(orderInfo.order_no));
        //            });
        //            break;
        //        case BasePlatformManager.PlatformType.I4:
        //            ChargeController.Instance().CreateOrder(item_id, item_count, (orderInfo) =>
        //            {
        //                PlayerDataManager pdm = PlayerDataManager.Instance();

        //                string[] customInfo = { "", orderInfo.order_no };

        //                Dictionary<string, string> dic = new Dictionary<string, string>
        //                {
        //                    {"orderId", orderInfo.order_no},
        //                    {"money", orderInfo.totla_price}, 
        //                    {"roleId", "" + pdm.id},
        //                    {"roleName", pdm.nickName},
        //                    {"grade", "" + pdm.level},
        //                    {"customInfo", String.Join(",", customInfo)},
        //                    {"notifyUrlo", Http.Instance().host},
        //                    {"zoneId", "" + pdm.server_id},

        //                };

        //                I4Manager.Instance.Paid(dic, () => { });
        //                chargePopWin.WaitForOrderResult(orderInfo.order_no);
        //            });
        //            break;

        //        case BasePlatformManager.PlatformType.oppo:
        //            ChargeController.Instance().CreateOrder(item_id, item_count, (orderInfo) =>
        //            {
        //                PlayerDataManager pdm = PlayerDataManager.Instance();

        //                string[] customInfo = { "", orderInfo.order_no };

        //                Dictionary<string, string> dic = new Dictionary<string, string>
        //                {
        //                    {"amount", orderInfo.totla_price},
        //                    {"desc", orderInfo.item_desc}, 
        //                    {"name", "" + orderInfo.item_name},
        //                    {"customInfo", String.Join(",", customInfo)},
        //                    {"notifyUrl", Http.Instance().host}
        //                };

        //                OppoManager.Instance.Paid(dic, () => paySuc(orderInfo.order_no));
        //            });
        //            break;


        //        case BasePlatformManager.PlatformType.baidu:
        //            ChargeController.Instance().CreateOrder(item_id, item_count, (orderInfo) =>
        //            {
        //                string cpInfo = string.Join(",", new string[] { Http.Instance().host, orderInfo.order_no });

        //                Dictionary<string, string> dic = new Dictionary<string, string>
        //                {
        //                    {"orderId", orderInfo.order_no}, 
        //                    {"productInfo", "" + orderInfo.item_name},
        //                    {"billPrice", orderInfo.totla_price}, 
        //                    {"cpInfo",cpInfo}
        //                };

        //                BaiDuManager.Instance.Paid(dic, () => paySuc(orderInfo.order_no));
        //            });
        //            break;
        //        case BasePlatformManager.PlatformType.LengJing:
        //            ChargeController.Instance().CreateOrder(item_id, item_count, orderInfo =>
        //            {
        //                string cpInfo = string.Join(",", new string[] { Http.Instance().host, orderInfo.order_no });
        //                Dictionary<string, string> dic = new Dictionary<string, string>
        //                {

        //                };
        //                LengJingManager.Instance.Paid(dic, () => paySuc(orderInfo.order_no));
        //            });
        //            break;

        //        case BasePlatformManager.PlatformType.MSDK:
        //            ChargeController.Instance().CreateOrder(item_id, item_count, orderInfo =>
        //            {
        //                PlayerDataManager pdm = PlayerDataManager.Instance();
        //                (MSDKManager.Instance.MessageReceiverInstance as MSDKmessage).OrderNo = orderInfo.order_no;
        //                var qCoin = orderInfo.totla_price;
        //                var qPoint = float.Parse(orderInfo.totla_price) * 10f;
        //                string cpInfo = string.Join(",", new string[] { Http.Instance().host, orderInfo.order_no });
        //                Debug.Log("qPoint:" + qPoint);
        //                Dictionary<string, string> dic = new Dictionary<string, string>
        //                {
        //                    {"item_id",item_id.ToString()},
        //                    {"count",qPoint.ToString()},
        //                    {"zoneid", "" + pdm.server_id},
        //                };
        //                MSDKManager.Instance.Paid(dic, () => chargePopWin.PayComplete(orderInfo.order_no, item_id));
        //            });

        //            break;
        //        default:
        //            throw new ArgumentOutOfRangeException();
        //    }
        //}

        //public void EnterServer(Action<LoginData> callback, LoginController loginController)
        //{
        //    _loginController = loginController;

        //    if (_loginController != null)
        //    {
        //        switch (BasePlatformManager.CurrentPlatform)
        //        {
        //            case BasePlatformManager.PlatformType.Inlycat:
        //                _loginController.EnterServerCallback = callback;

        //                Dictionary<string, object> paramsDic = new Dictionary<string, object>();

        //                paramsDic.Add("url", string.Format("http://{0}{1}", Http.Instance().host, GameProperty.Instance().config.external_login_url + ("?ref=" + GameProperty.Instance().config.channel + "&v=?"+GameProperty.Instance().config.update_version+ "&device_id=" + SystemInfo.deviceUniqueIdentifier)));
        //                paramsDic.Add("access_key", null);

        //                Http.Get<LoginResult>("user", "request_access", paramsDic, _loginController.OnRequestAccessSucceed, null, null, GameProperty.Instance().config.game_center_host);
        //                break;
        //            case BasePlatformManager.PlatformType.UnionSDK:
        //                LoginFromUnionSDK(UnionSDKManager.Instance.Uid, UnionSDKManager.Instance.Token, UnionSDKManager.Instance.ChannelName, SystemInfo.deviceUniqueIdentifier, callback);
        //                break;
        //            case BasePlatformManager.PlatformType.DownJoy:
        //                LoginFromDownJoy(DownJoyManager.Instance.Uid, DownJoyManager.Instance.Token, DownJoyManager.Instance.ChannelName, SystemInfo.deviceUniqueIdentifier, callback);
        //                break;
        //            case BasePlatformManager.PlatformType.TBT:
        //                LoginFromTBT(TBTManager.Instance.Uid, TBTManager.Instance.Token, SystemInfo.deviceUniqueIdentifier, callback);
        //                break;
        //            case BasePlatformManager.PlatformType.XiaoMi:
        //                LoginFromXiaoMi(XiaoMiManager.Instance.Uid, XiaoMiManager.Instance.Token, SystemInfo.deviceUniqueIdentifier,
        //                    callback);
        //                break;
        //            case BasePlatformManager.PlatformType.UC:
        //                LoginFromUC(UCManager.Instance.Sid, SystemInfo.deviceUniqueIdentifier, (LoginData) =>
        //                {
        //                    callback(LoginData);
        //                    /** 分区信息 */
        //                    //UCGameSdk.notifyZone();
        //                });
        //                break;

        //            case BasePlatformManager.PlatformType.I4:
        //                LoginFromI4(I4Manager.Instance.Uid, I4Manager.Instance.Token, SystemInfo.deviceUniqueIdentifier,
        //                    callback);
        //                break;
        //            case BasePlatformManager.PlatformType.baidu:
        //                LogiFromBaiDu(BaiDuManager.Instance.Uid, BaiDuManager.Instance.Token, SystemInfo.deviceUniqueIdentifier, callback);
        //                break;

        //            case BasePlatformManager.PlatformType.oppo:
        //                LoginFromOppo(OppoManager.Instance.Uid, OppoManager.Instance.Token, SystemInfo.deviceUniqueIdentifier, callback);

        //                break;

        //            case BasePlatformManager.PlatformType.kuaiyong:
        //                LoginFromKuaiYong(KuaiYongManager.Instance.Uid, KuaiYongManager.Instance.Token, SystemInfo.deviceUniqueIdentifier, callback);
        //                break;

        //            case BasePlatformManager.PlatformType.LengJing:
        //                LoginFromLengJing(LengJingManager.Instance.Uid, LengJingManager.Instance.Token, SystemInfo.deviceUniqueIdentifier, callback);
        //                break;

        //            case BasePlatformManager.PlatformType.MSDK:
        //                LoginFromMSDK(MSDKManager.Instance.Uid, MSDKManager.Instance.Token, SystemInfo.deviceUniqueIdentifier, callback);
        //                break;
        //            default:
        //                throw new ArgumentOutOfRangeException();
        //        }
        //    }
        //}

        //public void CheckUpdate(Action<bool> loadVersion)
        //{
        //    /** SDK初始化，版本控制，检查强制更新 */
        //    switch (BasePlatformManager.CurrentPlatform)
        //    {
        //        case BasePlatformManager.PlatformType.Inlycat:
        //            loadVersion(false);
        //            break;

        //        case BasePlatformManager.PlatformType.UnionSDK:

        //            UnionSDKManager.Instance.CheckUpdate((needUpdate) =>
        //            {
        //                if (needUpdate)
        //                {
        //                    NativeStorage.DeleteUselessData();
        //                    /// TODO 
        //                }
        //                else
        //                {
        //                    loadVersion(true);
        //                }
        //            });

        //            break;

        //        case BasePlatformManager.PlatformType.DownJoy:

        //            DownJoyManager.Instance.CheckUpdate((needUpdate) =>
        //            {
        //                if (needUpdate)
        //                {
        //                    NativeStorage.DeleteUselessData();
        //                    /// TODO 
        //                }
        //                else
        //                {
        //                    loadVersion(true);
        //                }
        //            });

        //            break;

        //        case BasePlatformManager.PlatformType.TBT:

        //            TBTManager.Instance.CheckUpdate((needUpdate) =>
        //            {
        //                if (needUpdate)
        //                {
        //                    NativeStorage.DeleteUselessData();
        //                    /// TODO 
        //                }
        //                else
        //                {
        //                    loadVersion(true);
        //                }
        //            });

        //            break;

        //        case BasePlatformManager.PlatformType.XiaoMi:

        //            XiaoMiManager.Instance.CheckUpdate((needUpdate) =>
        //            {
        //                if (needUpdate)
        //                {
        //                    NativeStorage.DeleteUselessData();
        //                    /// TODO 
        //                }
        //                else
        //                {
        //                    loadVersion(true);
        //                }
        //            });

        //            break;
        //        case BasePlatformManager.PlatformType.UC:

        //            UCManager.Instance.CheckUpdate((needUpdate) =>
        //            {
        //                if (needUpdate)
        //                {
        //                    NativeStorage.DeleteUselessData();
        //                }
        //                else
        //                {
        //                    loadVersion(true);
        //                }
        //            });
        //            break;

        //        case BasePlatformManager.PlatformType.I4:
        //            I4Manager.Instance.CheckUpdate((needUpdate) =>
        //            {
        //                if (needUpdate)
        //                {
        //                    NativeStorage.DeleteUselessData();
        //                }
        //                else
        //                {
        //                    loadVersion(true);
        //                }
        //            });

        //            break;

        //        case BasePlatformManager.PlatformType.baidu:
        //            BaiDuManager.Instance.CheckUpdate((needUpdate) =>
        //            {
        //                if (needUpdate)
        //                {
        //                    NativeStorage.DeleteUselessData();
        //                }
        //                else
        //                {
        //                    loadVersion(true);
        //                }
        //            });

        //            break;

        //        case BasePlatformManager.PlatformType.oppo:
        //            OppoManager.Instance.CheckUpdate((needUpdate) =>
        //            {
        //                if (needUpdate)
        //                {
        //                    NativeStorage.DeleteUselessData();
        //                }
        //                else
        //                {
        //                    loadVersion(true);
        //                }
        //            });

        //            break;

        //        case BasePlatformManager.PlatformType.kuaiyong:
        //            KuaiYongManager.Instance.CheckUpdate((needUpdate) =>
        //            {
        //                if (needUpdate)
        //                {
        //                    NativeStorage.DeleteUselessData();
        //                }
        //                else
        //                {
        //                    loadVersion(true);
        //                }
        //            });

        //            break;

        //        case BasePlatformManager.PlatformType.LengJing:
        //            LengJingManager.Instance.CheckUpdate(needUpdate =>
        //            {
        //                if (needUpdate)
        //                {
        //                    NativeStorage.DeleteUselessData();
        //                }
        //                else
        //                {
        //                    loadVersion(true);
        //                }
        //            });
        //            break;

        //        case BasePlatformManager.PlatformType.MSDK:
        //            MSDKManager.Instance.CheckUpdate(needUpdate =>
        //            {
        //                if (needUpdate)
        //                {
        //                    NativeStorage.DeleteUselessData();
        //                }
        //                else
        //                {
        //                    loadVersion(true);
        //                }
        //            });
        //            break;
        //        default:
        //            throw new ArgumentOutOfRangeException();
        //    }
        //}

        //public void SubmitExtendData(PlayerData pData)
        //{
        //    switch (BasePlatformManager.CurrentPlatform)
        //    {
        //        case BasePlatformManager.PlatformType.Inlycat:
        //            break;
        //        case BasePlatformManager.PlatformType.UnionSDK:
        //            UnionSDKManager.Instance.ReportRoleInfo(pData.id.ToString(), pData.nick_name, pData.level.ToString(), GameProperty.Instance().serverZoneId.ToString(), GameProperty.Instance().serverName);
        //            break;
        //        case BasePlatformManager.PlatformType.DownJoy:
        //            break;
        //        case BasePlatformManager.PlatformType.TBT:
        //            break;
        //        case BasePlatformManager.PlatformType.XiaoMi:
        //            break;
        //        case BasePlatformManager.PlatformType.UC:
        //            UCManager.Instance.SubmitExtendData(pData.id.ToString(), pData.nick_name, pData.level.ToString(), GameProperty.Instance().serverZoneId, GameProperty.Instance().serverName);
        //            break;
        //        case BasePlatformManager.PlatformType.I4:
        //            break;
        //        case BasePlatformManager.PlatformType.oppo:
        //            break;
        //        case BasePlatformManager.PlatformType.kuaiyong:
        //            break;
        //        case BasePlatformManager.PlatformType.anzhi:
        //            break;
        //        case BasePlatformManager.PlatformType.baidu:
        //            break;
        //        case BasePlatformManager.PlatformType.LengJing:
        //            LengJingManager.Instance.SubmitExtendData(pData.id.ToString(), pData.nick_name, pData.level.ToString(), GameProperty.Instance().serverZoneId, GameProperty.Instance().serverName);
        //            break;

        //        case BasePlatformManager.PlatformType.MSDK:
        //            break;
        //        default:
        //            throw new ArgumentOutOfRangeException();
        //    }
        //}

        //public void ExitGame(Action onQuitGame)
        //{
        //    switch (BasePlatformManager.CurrentPlatform)
        //    {
        //        case BasePlatformManager.PlatformType.I4:

        //        case BasePlatformManager.PlatformType.oppo:

        //        case BasePlatformManager.PlatformType.kuaiyong:

        //        case BasePlatformManager.PlatformType.anzhi:

        //        case BasePlatformManager.PlatformType.baidu:

        //        case BasePlatformManager.PlatformType.DownJoy:

        //        case BasePlatformManager.PlatformType.TBT:

        //        case BasePlatformManager.PlatformType.XiaoMi:
        //        case BasePlatformManager.PlatformType.Inlycat:
        //            PopExit.Open(onQuitGame);
        //            break;
        //        case BasePlatformManager.PlatformType.UnionSDK:
        //            UnionSDKManager.Instance.Exit();
        //            break;



        //        case BasePlatformManager.PlatformType.UC:
        //            UCManager.Instance.ExitSDK();
        //            break;
        //        case BasePlatformManager.PlatformType.LengJing:
        //            LengJingManager.Instance.Exit();
        //            break;

        //        case BasePlatformManager.PlatformType.MSDK:
        //            PopExit.Open(onQuitGame);
        //            //MSDKManager.Instance.Exit();
        //            break;
        //        default:
        //            throw new ArgumentOutOfRangeException();
        //    }
        //}


        #endregion


        #region login from platform request

        #endregion
    }


}